
DIM block% 511, gbpb% 511

os_readargs,",,t$,p$,c$": t$=type$:p$=path$:c$=command$
SYS "OS_FSControl",31,type$ TO ,,type%

choices%=FNread("Choices$Path")

start%=1:i%=0
WHILE start%<>0
  tmp$=FNsegment(choices%,start%)+"Director.Menus.AutoRun"+p$
  IF FNifthereis(tmp$,2) THEN
    path$(i%)=FNcanon(tmp$)
    i%+=1
  ENDIF
ENDWHILE
path$(i%)=FNcanon("<Director$Dir>.Menus.AutoRun"+p$)

:

r4%=0
FOR j%=i% TO 0 STEP -1
  dir$=path$(j%)
  WHILE r4%<>-1
    SYS "OS_GBPB",12,path$(j%),gbgp%,1,r4%,511 TO ,,,r3%,r4%
    IF r3%<>0 THEN
      file_type%=gbpb%!20
      file_name$=FNstring(gbpb%+24)
      exist%=TRUE
      FOR m%=0 TO j%-1
        IF FNifthereis(path$(m%),1)+"."+name$ exist%=FALSE
      NEXT
      IF exist% PRINT "Running:  "+c$+" "+path$(j%)+"."+name$ ELSE PRINT "Skipping: "+c$+" "+path$(j%)+"."+name$
      REM IF exist% SYS "Wimp_StartTask",c$+" "+path$(j%)+"."+name$
    ENDIF
  ENDWHILE
NEXT

END

:

DEF FNread(str$)
LOCAL size%
SYS "OS_ReadVarVal",str$,0,-1 TO ,,size%
size%=NOT(size%)
LOCAL var% size%
SYS "OS_ReadVarVal",str$,var%,size% TO ,,size%
=var%

REM str%:   pointer to start of the whole string in memory
REM char$:  single character where the string must be split (as in INSTR)
REM start%: This must be 1 for the 1st call.
REM         The routine will update this value upon returning.
REM         It's value will be 0 when the last segment has been returned.
DEF FNsegment(str%,RETURN start%)
PRINT str%,ptr%
LOCAL text$,ptr%=start%,exit%=TRUE,t%
WHILE exit%
  IF str%?ptr%<ASC(" ") THEN exit%=FALSE
  IF str%?ptr%=ASC(",") THEN exit%=FALSE
  ptr%+=1
ENDWHILE
ptr%-=1
t%=str%?ptr%
str%?ptr%=13
text$=$(str%+start%)
str%?ptr%=CHR$(t%)
start%=ptr%+1
IF str%?start%=0 start%=0
PRINT str%,ptr%,start%'text$'
=text$

DEF FNoccurance(str%)
LOCAL ptr%=0:count%=0
WHILE str%?ptr%<>0
  IF str%?ptr%=ASC(",") count+=1
ENDWHILE
=count%

DEF FNstring(ptr%):LOCAL a$:a$=""
WHILE ?ptr%>31
  a$+=CHR$(?ptr%):ptr%+=1
ENDWHILE:=a$

DEF FNifthereis(o$,t%)
SYS "XOS_File", 17, o$ TO s%;f%
IF f% AND 1 THEN =FALSE
=(s%=t%)

DEF FNcanon(a$)
REM =a$
SYS XOS_FSControl%,37,a$,buffer%,,,buffer_size%
=FNstring(buffer%)
